/**
 * 请勿将 此 插件 引入 到  除了 pagination 公共 组件  之外的 其他 组件 
 * 已 改版  重构
 * 
 * 采用双线并行策略  双备份策略
 * 
 * 输入   最大值 
 * 输出   事件   并传参当前页数 和叶容量  触发 所在页面 表格请求
 * 并且   同时备份一份到 路由缓存
 * 
 * 
 * 修改人: @jinnian
 * 注释时间: 2019-09-04 11:09:11
 *   
 * 
 */


export default {
  data() {
    return {};
  },

  created() {
    this.pageSize = this.get_router_cache_value_by_path("pageSize");
    this.currentPage = this.get_router_cache_value_by_path("currentPage");
    this.initPageSizeAndCurrentPage(this.pageSize, this.currentPage);
    this.compute_maxPageNum();
  },
  watch: {
    total() {
      console.log("翻页器 变化");
      this.compute_maxPageNum();
    },
    pageSize() {
      this.compute_maxPageNum();
    },
    currentPage() {
      this.handle_currentPage_change();
    }
  },
  methods: {
    compute_maxPageNum() {
      console.log("翻页器 计算 最大值");

      this.maxPageNum = Math.ceil(this.total / this.pageSize);

      console.log(this.maxPageNum);
    },
    compute_pagination() {
      let obj = {
        page: this.currentPage,
        rowsPerPage: this.pageSize,
        rowsNumber: this.total
      };
      this.pagination = Object.assign(this.pagination, obj);

      this.$emit("handle_pagination_change", this.pagination);
    },

    initPageSizeAndCurrentPage(pageSize, currentPage) {
      this.pageSize = pageSize;
      this.compute_pagination();

      if (Number.isNaN(Number(currentPage))) {
        currentPage = 1;
      }

      currentPage = currentPage <= 0 ? 1 : currentPage;
      currentPage =
        currentPage >= this.maxPageNum ? Number(this.maxPageNum) : currentPage;
      this.currentPage = Number(currentPage);

      this.$forceUpdate();
      // 在此处 设置值   缓存
      this.set_router_cache_by_path_and_value("pageSize", this.pageSize);
      this.set_router_cache_by_path_and_value("currentPage", this.currentPage);

      if (this.tabledata_can_request) {
        // this.init_tabledata();
        // this.$emit('init_tabledata',this.currentPage,this.pageSize)
        // 在 抽离后的翻页组件内 当前页 传递父级， pagesize 走全局
        this.$emit(
          "init_tabledata_with_pageSize_and_currentPage",
          this.pageSize,
          this.currentPage
        );
      }
    },

    handle_pageSize_change(val) {
      this.initPageSizeAndCurrentPage(val, this.currentPage);
    }
    // handle_currentPage_change(val) {
    //   console.log(val);

    //   this.initPageSizeAndCurrentPage(this.pageSize, val);
    // }
  }
};
